{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <style>\n",
       "        .output_wrapper, .output {\n",
       "            height:auto !important;\n",
       "            max-height:100000px; \n",
       "        }\n",
       "        .output_scroll {\n",
       "            box-shadow:none !important;\n",
       "            webkit-box-shadow:none !important;\n",
       "        }\n",
       "        </style>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#format the book\n",
    "from __future__ import division, print_function\n",
    "%matplotlib inline\n",
    "import sys\n",
    "sys.path.insert(0, '..')\n",
    "import book_format\n",
    "book_format.set_style()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Computing and plotting PDFs of discrete data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So let's investigate how to compute and plot probability distributions.\n",
    "\n",
    "\n",
    "First, let's make some data according to a normal distribution. We use `numpy.random.normal` for this. The parameters are not well named. `loc` is the mean of the distribution, and `scale` is the standard deviation. We can call this function to create an arbitrary number of data points that are distributed according to that mean and std."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "50000\n",
      "2.9947741815932556\n",
      "2.0063665533914694\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import numpy.random as random\n",
    "\n",
    "mean = 3\n",
    "std = 2\n",
    "\n",
    "data = random.normal(loc=mean, scale=std, size=50000)\n",
    "print(len(data))\n",
    "print(data.mean())\n",
    "print(data.std())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see from the print statements we got 5000 points that have a mean very close to 3, and a standard deviation close to 2.\n",
    "\n",
    "We can plot this Gaussian by using `scipy.stats.norm` to create a frozen function that we will then use to compute the pdf (probability distribution function) of the Gaussian."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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nJCQ4M861VqHDh3igQceoH///kyYMMHtOKYG1KlTh5kzZ3Lw4EHuuecet+OYMOdPQdgEdBKR9iISC4wDFldosxjPTmOAMUCWqqqINALeBR5Q1X+XNxaRGBG5wHleBxgObD+3VTF33nknx48fZ/r06VgPXO3RvXt3/vM//5OZM2eyevVqt+OYMFZlQXD2CUwBVgC5wAJV3SEij4jISKfZS0BTEckD7gLKD02dAlwM/HeFw0vjgBUisg3YCnwNvBjIFatt5s6dy6xZs3jwwQdJTKx4EJiJdA899BAdO3bktttu4+TJk27HMWFKwunohOTkZM3OznY7Rsj58ssvufLKK0lMTGTt2rXExMS4Hcm4YPXq1aSmpjJ58mSef/55t+OYECIim1U1uap2dqZymCstLWXixImUlZUxa9YsKwa12IABA7jnnnt44YUXmDNnjttxTBiyghDmHnvsMd5//32mT59Ohw4d3I5jXPanP/2J3r17M2nSJLvdpqk2Kwhh7M033+QPf/gDEydO5KabbnI7jgkBderUYd68eZx33nmMGTOGEydOuB3JhBErCGEqOzubiRMn0rNnT2bMmGFHFZkzWrVqxZw5c8jNzWXChAmUlJS4HcmECSsIYWjv3r2MGDGC5s2bs2jRIurWret2JBNiBg0axDPPPMPixYuZPHmyXdrC+MX2QIaZAwcOkJaWxokTJ8jIyKBZM7tIrPHt9ttv5+DBgzz66KO0aNGCP/3pT25HMiHOCkIY2bdvH6mpqeTn5/Puu+/SpUsXtyOZEPfwww9z8OBBHnvsMeLj43nggQese9FUygpCmNi7dy+pqakcOHCA5cuX07t3b7cjmTAgIjz77LN89913PPjggxQUFPDEE08QFWW9xebHrCCEgezsbH7xi19w7NgxVq1axdVXX+12JBNGoqOjef3110lISOCpp57i4MGDvPrqq8TGxrodzYQY+zchxL322mv07t2bqKgo3nvvPSsG5qxERUUxbdo0/vznPzN37lxSU1PZu3dv1ROaWsUKQog6ceIEU6ZMIT09nZ49e5KdnU1SUpLbsUwYExHuv/9+5s6dy0cffURSUhJLlixxO5YJIVYQQtDq1au54oormD59OnfeeScrV67ELv1tAmXcuHHk5ORw0UUXMXLkSH77299SWFjodiwTAqwghJCvv/6aW2+9ldTU1DNdRE8+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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.stats as stats\n",
    "\n",
    "def plot_normal(xs, mean, std, **kwargs):\n",
    "    norm = stats.norm(mean, std)\n",
    "    plt.plot(xs, norm.pdf(xs), **kwargs)\n",
    "\n",
    "xs = np.linspace(-5, 15, num=200)\n",
    "plot_normal(xs, mean, std, color='k')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But we really want to plot the PDF of the discrete data, not the idealized function.\n",
    "\n",
    "There are a couple of ways of doing that. First, we can take advantage of `matplotlib`'s `hist` method, which computes a histogram of a collection of data. Normally `hist` computes the number of points that fall in a bin, like so:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(data, bins=200)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "that is not very useful to us - we want the PDF, not bin counts. Fortunately `hist` includes a `density` parameter which will plot the PDF for us."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(data, bins=200, density=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "I may not want bars, so I can specify the `histtype` as 'step' to get a line."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(data, bins=200, density=True, histtype='step', lw=2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To be sure it is working, let's also plot the idealized Gaussian in black."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(data, bins=200, density=True, histtype='step', lw=2)\n",
    "norm = stats.norm(mean, std)\n",
    "plt.plot(xs, norm.pdf(xs), color='k', lw=2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There is another way to get the approximate distribution of a set of data. There is a technique called *kernel density estimate* that uses a kernel to estimate the probability distribution of a set of data. SciPy implements it with the function `gaussian_kde`. Do not be mislead by the name - Gaussian refers to the type of kernel used in the computation. This works for any distribution, not just Gaussians. In this section we have a Gaussian distribution, but soon we will not, and this same function will work."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kde = stats.gaussian_kde(data)\n",
    "\n",
    "xs = np.linspace(-5, 15, num=200)\n",
    "plt.plot(xs, kde(xs))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Monte Carlo Simulations\n",
    "\n",
    "\n",
    "We (well I) want to do this sort of thing because I want to use monte carlo simulations to compute distributions. It is easy to compute Gaussians when they pass through linear functions, but difficult to impossible to compute them analytically when passed through nonlinear functions. Techniques like particle filtering handle this by taking a large sample of points, passing them through a nonlinear function, and then computing statistics on the transformed points. Let's do that.\n",
    "\n",
    "We will start with the linear function $f(x) = 2x + 12$ just to prove to ourselves that the code is working. I will alter the mean and std of the data we are working with to help ensure the numbers that are output are unique It is easy to be fooled, for example, if the formula multipies x by 2, the mean is 2, and the std is 2. If the output of something is 4, is that due to the multication factor, the mean, the std, or a bug? It's hard to tell. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAD8CAYAAACb4nSYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAFd5JREFUeJzt3X+s3fV93/Hna2YQiayIJN6UGRw7maOUNhUst/BHJlJ1kDhjwlRKFhNVIlIkjxVrnVClumtEmKtINN26Thpb4y1IaTXq0WTtrOKK0YaqqTpam4RADKIY1wt3RoHGCBYlgZq898f9Xno4Ptfne6/Pved8z/f5kK7u+X6/n++57/O9976+n/P5/jipKiRJ/fC3pl2AJGnjGPqS1COGviT1iKEvST1i6EtSjxj6ktQjrUI/yc4kTyU5nmTfiOW3Jnk8yaNJ/iTJFc38bUm+18x/NMmvT/oFSJLay7jz9JNsAv4CuB5YBI4AN1fVEwNtfqiqXm4e3wj8TFXtTLIN+L2q+tH1KV+StBptevpXA8er6kRVvQocBHYNNlgO/MbFgFd8SdIMuqBFmy3AswPTi8A1w42S3AbcDlwI/OTAou1Jvga8DHyqqr4yYt09wB6Aiy+++H3vec97Wr8ASRI88sgjf1VVm8e1axP6GTHvrJ58Vd0N3J3k48CngFuA54CtVfXtJO8DfjfJjwy9M6CqDgAHABYWFuro0aMtypIkLUvyf9q0azO8swhcPjB9GXDqHO0PAjcBVNUrVfXt5vEjwDPAu9sUJkmavDahfwTYkWR7kguB3cChwQZJdgxM3gA83czf3BwIJsk7gR3AiUkULklavbHDO1V1Jsle4AFgE3BPVR1Lsh84WlWHgL1JrgP+GniRpaEdgGuB/UnOAK8Bt1bV6fV4IZKk8caesrnRHNOXpNVL8khVLYxr5xW5ktQjhr4k9YihL0k9YuhLUo8Y+pLUI4a+JPWIoS9JPWLoS1KPGPqS1COGviT1iKEvST1i6EtSjxj6ktQjhr4k9YihL0k9YuhLUo8Y+pLUI4a+JPWIoS9JPWLoS1KPGPqS1COGviT1SKvQT7IzyVNJjifZN2L5rUkeT/Jokj9JcsXAsl9o1nsqyYcmWXyfbNt3/+tfkrRWY0M/ySbgbuDDwBXAzYOh3ri3qt5bVVcCnwV+tVn3CmA38CPATuA/Nc8nSZqCNj39q4HjVXWiql4FDgK7BhtU1csDkxcD1TzeBRysqleq6i+B483zSZKm4IIWbbYAzw5MLwLXDDdKchtwO3Ah8JMD6z48tO6WEevuAfYAbN26tU3dkqQ1aNPTz4h5ddaMqrur6l3AzwOfWuW6B6pqoaoWNm/e3KIkSdJatAn9ReDygenLgFPnaH8QuGmN60qS1lGb0D8C7EiyPcmFLB2YPTTYIMmOgckbgKebx4eA3UkuSrId2AH8+fmXLUlai7Fj+lV1Jsle4AFgE3BPVR1Lsh84WlWHgL1JrgP+GngRuKVZ91iS+4AngDPAbVX12jq9FknSGG0O5FJVh4HDQ/PuGHj8s+dY9zPAZ9ZaYN95Xr6kSfKK3A7zYi1Jq2XoS1KPGPqS1COGviT1iKHfQcNj+Y7rS2rL0JekHjH0JalHDH1J6hFDX5J6xNCXpB4x9CWpR1rde0cbb/g0zJN33XDO5ZLUhj19SeoRQ7+jTt51w1m9f0kax9CXpB4x9CWpRwz9GeRBWknrxdDvAMfuJU2KoT8n/BQtSW0Y+pLUI4a+JPWIod9xnq8vaTVahX6SnUmeSnI8yb4Ry29P8kSSx5L8YZJ3DCx7LcmjzdehSRYvSVqdsffeSbIJuBu4HlgEjiQ5VFVPDDT7GrBQVd9N8i+AzwIfa5Z9r6qunHDdkqQ1aNPTvxo4XlUnqupV4CCwa7BBVT1UVd9tJh8GLptsmZKkSWgT+luAZwemF5t5K/kk8PsD029KcjTJw0luGrVCkj1Nm6MvvPBCi5IkSWvR5tbKGTGvRjZMfhpYAD4wMHtrVZ1K8k7gy0ker6pn3vBkVQeAAwALCwsjn1uSdP7ahP4icPnA9GXAqeFGSa4DfhH4QFW9sjy/qk41308k+SPgKuCZ4fW1ZPACK8/KkTRpbYZ3jgA7kmxPciGwG3jDWThJrgI+B9xYVc8PzL80yUXN47cB7wcGDwBLkjbQ2NCvqjPAXuAB4Engvqo6lmR/khubZr8CvBn47aFTM38YOJrk68BDwF1DZ/1oBWvt5XsrBknn0urjEqvqMHB4aN4dA4+vW2G9PwXeez4FSpImxytyZ4i9dEnrzdCXpB4x9GeQZ+1IWi+GviT1iKEvST1i6EtSj7Q6ZVPry7N2JG0Ue/qS1COG/pzwjB9JbRj6ktQjjunPEHvrktabPX1J6hFDfw5t23e/ZwRJGsnQl6QeMfQlqUcM/TnigWBJ4xj6ktQjhr4k9YihL0k9YuhLUo8Y+pLUI4b+nPEMHknn0ir0k+xM8lSS40n2jVh+e5InkjyW5A+TvGNg2S1Jnm6+bplk8To3r8qVNGxs6CfZBNwNfBi4Arg5yRVDzb4GLFTVjwFfBD7brPsW4NPANcDVwKeTXDq58rvPYJa0kdr09K8GjlfViap6FTgI7BpsUFUPVdV3m8mHgcuaxx8CHqyq01X1IvAgsHMypXffegW+QzySVtIm9LcAzw5MLzbzVvJJ4PfXuG5vGdSSNkKb++lnxLwa2TD5aWAB+MBq1k2yB9gDsHXr1hYlzRcDX9JGadPTXwQuH5i+DDg13CjJdcAvAjdW1SurWbeqDlTVQlUtbN68uW3tkqRVahP6R4AdSbYnuRDYDRwabJDkKuBzLAX+8wOLHgA+mOTS5gDuB5t5kqQpGDu8U1VnkuxlKaw3AfdU1bEk+4GjVXUI+BXgzcBvJwH4ZlXdWFWnk/wSSzsOgP1VdXpdXokkaaxWn5FbVYeBw0Pz7hh4fN051r0HuGetBUqSJscrciWpRwz9KfGiLEnTYOjPOXcukgYZ+lPmOfqSNpKhP6fcmUgaxdDvAYd4JC0z9CWpRwz9OeYQj6Rhhr4k9YihL0k9YuhLUo8Y+pLUI4a+JPWIoS9JPWLoT4EXS0maFkNfknrE0JekHjH0JalHDP0p8jYJkjaaob/BPIgraZoM/Z5wZyMJDP2pcWhH0jS0Cv0kO5M8leR4kn0jll+b5KtJziT5yNCy15I82nwdmlThasedi6RBF4xrkGQTcDdwPbAIHElyqKqeGGj2TeATwM+NeIrvVdWVE6hVmm93XjLw+KXp1aG51qanfzVwvKpOVNWrwEFg12CDqjpZVY8BP1iHGjUhjutLahP6W4BnB6YXm3ltvSnJ0SQPJ7lpVdVJkiaqTehnxLxaxc/YWlULwMeBX0vyrrN+QLKn2TEcfeGFF1bx1GrDcX1Jy8aO6bPUs798YPoy4FTbH1BVp5rvJ5L8EXAV8MxQmwPAAYCFhYXV7FCkblrL+L1j/pqANj39I8COJNuTXAjsBlqdhZPk0iQXNY/fBrwfeOLca0mS1svY0K+qM8Be4AHgSeC+qjqWZH+SGwGS/HiSReCjwOeSHGtW/2HgaJKvAw8Bdw2d9SNJ2kBthneoqsPA4aF5dww8PsLSsM/wen8KvPc8a9QEbdt3v2P8XbA8lHPnS28c1hm1XFqFVqEvaR2NCvU2y6Q18DYMPeT5+h032Lt3p6BVsqffEyfvusGwn6Zx4bwc5Ia41pk9/Q007dB1LL8D7nyp3Ti9Y/laI3v60jStFN6GutaJoT8F9rh7xOEazRiHd6Suu/MSdy5qzdDfINMez9eUjRqrdwhHU2DoS13V9qCvNMDQ32CO50uaJg/kSuvBMXbNKENfmhfDOxqHfjSCoS9N0rjgNYg1ZY7pS13njkSrYE9fmhQ/2UodYOhL58uDtuoQh3ekSbOXrxlm6PeUVwjPmeULtdzhaAyHd6TzMctDOx5j0Aj29HvGK4LXkT1tdYCh32MO8UyQYa+OMPR7zuCfQ+6AdA6GviT1SKvQT7IzyVNJjifZN2L5tUm+muRMko8MLbslydPN1y2TKlzSKvhBK2qMPXsnySbgbuB6YBE4kuRQVT0x0OybwCeAnxta9y3Ap4EFoIBHmnVfnEz53TBrQyjLB3Nnra7O6EJ4Lg/xnHUvoEsc/um5Nj39q4HjVXWiql4FDgK7BhtU1cmqegz4wdC6HwIerKrTTdA/COycQN3SdHQh8Ad5RpGGtDlPfwvw7MD0InBNy+cfte6W4UZJ9gB7ALZu3dryqbthsDft6ZJzpktheudL3dthaV206elnxLxq+fyt1q2qA1W1UFULmzdvbvnU0hR1KfClAW1CfxG4fGD6MuBUy+c/n3Xnir38OWBPWXOgTegfAXYk2Z7kQmA3cKjl8z8AfDDJpUkuBT7YzJM0Le68em1s6FfVGWAvS2H9JHBfVR1Lsj/JjQBJfjzJIvBR4HNJjjXrngZ+iaUdxxFgfzNP6i6HdtRhrW64VlWHgcND8+4YeHyEpaGbUeveA9xzHjV2lqdEaqYMHsz11M3e8opcqa8c5uklQ38DeBBXM8Pefe95P/114tDOHJjXnrDn7PeaPX1J6hFDX1oNh0fUcYb+OnM8v6Mc/tCcckxfGmeee/evn8I5x69Rb2BPfx107SBu1+rdUH0JQ9/Z9IahL/XRqFsuG/y9YOj32ODxBnv7PdWXdzJ6naEv9d1g8PuxinPP0O85zy6S+sXQl3Q2e/xzy9CfsC5/PKLj+vQ37Pws3d4w9CX9DcN/7hn666RLvfwu1bpuhnv4ht+SPr7rmXOGviT1iKEvDbKHv8RtMLcMfckhDPWIoS9JPWLoS8sc0hjNd0JzxdCfkG377p+L89zn4TVoHfT1+oU51Cr0k+xM8lSS40n2jVh+UZL/3iz/syTbmvnbknwvyaPN169PtnxJ62bUOx/Dv/PGhn6STcDdwIeBK4Cbk1wx1OyTwItV9Q+Afw/88sCyZ6rqyubr1gnVrQnr7bn6Bph6pk1P/2rgeFWdqKpXgYPArqE2u4AvNI+/CPzjJJlcmd1x8q4b+hugXWPgr47HPOZCm49L3AI8OzC9CFyzUpuqOpPkJeCtzbLtSb4GvAx8qqq+MvwDkuwB9gBs3bp1VS9AWpPhwDfQRnO7zJ02Pf1RPfZq2eY5YGtVXQXcDtyb5IfOalh1oKoWqmph8+bNLUqaLfN28HPeXs9YBpt6pE1PfxG4fGD6MuDUCm0Wk1wAXAKcrqoCXgGoqkeSPAO8Gzh6voVLa2IPXz3Xpqd/BNiRZHuSC4HdwKGhNoeAW5rHHwG+XFWVZHNzIJgk7wR2ACcmU7omzWMR0vwbG/pVdQbYCzwAPAncV1XHkuxPcmPT7PPAW5McZ2kYZ/m0zmuBx5J8naUDvLdW1elJvwhN3twN8XgXzcnyIHhntRneoaoOA4eH5t0x8Pj7wEdHrPcl4EvnWeNMm7twnDeGk/QGXpGrNxgc4nGHprMMf4i6OqdVT1/jzet4+LZ998/Xa3NIZ7KWg9/t2hn29CWtjgHfafb0NZ8celhfy8H/ek/fHn9XGPo6y/JwTmfH9EcFvmEkAYa+5p1hv76Ge/yaeYb+GnW2F9wnBr50Fg/kaqzO7OC81/v0+TuYeYb+BMzVKY2S5pqhrxUNX6g1cz3+5V6lPcvpG76thb+TmWXor8Fg+NnLnxHeV2f2GPwzydBXNxkos2l4Z+s7sZlj6K+SvfwZZw9/+s71geruAKbO0F+FmRvTlmaVQ2wzy/P016gvvfzhq3Nn7gZsBkv33HmJv7cpMvTVDQ4LSBORpY+xnR0LCwt19OjsfYSuY/lT3gYrhb49xm45187b3+V5SfJIVS2Ma+eYvtZkw45vnOvgnyExX3w3tyEc3hljONz62suHpde+7mE/7h/foO82b9A2dfb0VzCTV6DOgKldpevZIPNlpd+lp3WuO3v6LfW5h78hHOvtn3PdtsEPZVk3hv4I9vBXp/VpnKvpwfnP3i8rDfsMhv/wrTa0Jq1CP8lO4D8Am4D/WlV3DS2/CPgN4H3At4GPVdXJZtkvAJ8EXgP+ZVU9MLHqJ+RcIW8Pv51R2/AN265t4PvP3G/jwl/nbewpm0k2AX8BXA8sAkeAm6vqiYE2PwP8WFXdmmQ38FNV9bEkVwC/BVwN/H3gD4B3V9VrK/289Txlc7U9eAOfVf2zbfv+vZx808dX9fTbvn8v4LbWCtYz7Oesg9H2lM02Pf2rgeNVdaJ54oPALuCJgTa7gDubx18E/mOSNPMPVtUrwF8mOd483/9u+0JWaxJDM50OoCn2iNoE/nLInzW/5e+t078brd6oG7hN7Lln8N3DBuyI2oT+FuDZgelF4JqV2lTVmSQvAW9t5j88tO6W4R+QZA+wp5n8TpKnWlU/2tuAvzqP9ckvn8/a5+W8a5+SVdT9T8/rB63D76YH23zmWPtK/k3OZ+13tGnUJvRHVTE8JrRSmzbrUlUHgAMtahkrydE2b3FmUVdr72rd0N3au1o3WPu0tTlPfxG4fGD6MuDUSm2SXABcApxuua4kaYO0Cf0jwI4k25NcCOwGDg21OQTc0jz+CPDlWjpCfAjYneSiJNuBHcCfT6Z0SdJqjR3eacbo9wIPsHTK5j1VdSzJfuBoVR0CPg/8ZnOg9jRLOwaadvexdND3DHDbuc7cmZCJDBNNSVdr72rd0N3au1o3WPtUzdxdNiVJ68d770hSjxj6ktQjcxn6Se5M8n+TPNp8/ZNp13QuSXYmeSrJ8ST7pl3PaiQ5meTxZjvP3qffDEhyT5Lnk3xjYN5bkjyY5Onm+6XTrHGUFeqe+b/xJJcneSjJk0mOJfnZZn4XtvlKtc/8dh9nLsf0k9wJfKeq/u20axmnzW0uZlmSk8BCVc38xTZJrgW+A/xGVf1oM++zwOmquqvZ4V5aVT8/zTqHrVD3ncz433iStwNvr6qvJvk7wCPATcAnmP1tvlLt/4wZ3+7jzGVPv2Nev81FVb0KLN/mQhNWVX/M0tllg3YBX2gef4Glf+yZskLdM6+qnquqrzaP/x/wJEtX5Hdhm69Ue+fNc+jvTfJY89Z45t4+Dhh1m4su/XEV8L+SPNLcTqNr/l5VPQdL/+jA351yPavRlb9xkmwDrgL+jI5t86HaoUPbfZTOhn6SP0jyjRFfu4D/DLwLuBJ4Dvh3Uy323FrdqmKGvb+q/iHwYeC2ZihC668zf+NJ3gx8CfhXVfXytOtZjRG1d2a7r6SzH6JSVde1aZfkvwC/t87lnI9O36qiqk41359P8jssDVf98XSrWpVvJXl7VT3XjOM+P+2C2qiqby0/nuW/8SR/m6XQ/G9V9T+a2Z3Y5qNq78p2P5fO9vTPpflDWvZTwDdWajsD2tzmYiYlubg5yEWSi4EPMtvbepTBW4jcAvzPKdbSWhf+xpvbq38eeLKqfnVg0cxv85Vq78J2H2dez975TZbefhVwEvjny2OIs6g57evX+JvbXHxmyiW1kuSdwO80kxcA985y7Ul+C/gJlm6P+y3g08DvAvcBW4FvAh+tqpk6aLpC3T/BjP+NJ/lHwFeAx4EfNLP/NUtj47O+zVeq/WZmfLuPM5ehL0kabS6HdyRJoxn6ktQjhr4k9YihL0k9YuhLUo8Y+pLUI4a+JPXI/wdinkzlOosLGQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean = 14.00\n",
      "std  = 2.80\n"
     ]
    }
   ],
   "source": [
    "def f(x):\n",
    "    return 2*x + 12\n",
    "\n",
    "mean = 1.\n",
    "std = 1.4\n",
    "data = random.normal(loc=mean, scale=std, size=50000)\n",
    "\n",
    "d_t = f(data) # transform data through f(x)\n",
    "\n",
    "plt.hist(data, bins=200, density=True, histtype='step', lw=2)\n",
    "plt.hist(d_t, bins=200, density=True, histtype='step', lw=2)\n",
    "\n",
    "plt.ylim(0, .35)\n",
    "plt.show()\n",
    "print('mean = {:.2f}'.format(d_t.mean()))\n",
    "print('std  = {:.2f}'.format(d_t.std()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is what we expected. The input is the Gaussian $\\mathcal{N}(\\mu=1, \\sigma=1.4)$, and the function is $f(x) = 2x+12$. Therefore we expect the mean to be shifted to $f(\\mu) = 2*1+12=14$. We can see from the plot and the print statement that this is what happened. \n",
    "\n",
    "Before I go on, can you explain what happened to the standard deviation? You may have thought that the new $\\sigma$ should be passed through $f(x)$ like so $2(1.4) + 12=14.81$. But that is not correct - the standard deviation is only affected by the multiplicative factor, not the shift. If you think about that for a moment you will see it makes sense. We multiply our samples by 2, so they are twice as spread out as before. Standard deviation is a measure of how spread out things are, so it should also double. It doesn't matter if we then shift that distribution 12 places, or 12 million for that matter - the spread is still twice the input data.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Nonlinear Functions\n",
    "\n",
    "Now that we believe in our code, lets try it with nonlinear functions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean = -1.59\n",
      "std  = 2.09\n"
     ]
    }
   ],
   "source": [
    "def f2(x):\n",
    "    return (np.cos((1.5*x + 2.1))) * np.sin(0.3*x) - 1.6*x\n",
    "\n",
    "d_t = f2(data)\n",
    "plt.subplot(121)\n",
    "plt.hist(d_t, bins=200, density=True, histtype='step', lw=2)\n",
    "\n",
    "plt.subplot(122)\n",
    "kde = stats.gaussian_kde(d_t)\n",
    "xs = np.linspace(-10, 10, 200)\n",
    "plt.plot(xs, kde(xs), 'k')\n",
    "plot_normal(xs, d_t.mean(), d_t.std(), color='g', lw=3)\n",
    "plt.show()\n",
    "print('mean = {:.2f}'.format(d_t.mean()))\n",
    "print('std  = {:.2f}'.format(d_t.std()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here I passed the data through the nonlinear function $f(x) = \\cos(1.5x+2.1)\\sin(\\frac{x}{3}) - 1.6x$. That function is quite close to linear, but we can see how much it alters the pdf of the sampled data. \n",
    "\n",
    "There is a lot of computation going on behind the scenes to transform 50,000 points and then compute their PDF. The Extended Kalman Filter (EKF) gets around this by linearizing the function at the mean and then passing the Gaussian through the linear equation. We saw above how easy it is to pass a Gaussian through a linear function. So lets try that.\n",
    "\n",
    "We can linearize this by taking the derivative of the function at x. We can use sympy to get the derivative. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-1.5*sin(x/3)*sin(1.5*x + 2.1) + cos(x/3)*cos(1.5*x + 2.1)/3 - 1.6"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sympy\n",
    "x = sympy.symbols('x')\n",
    "f = sympy.cos(1.5*x+2.1) * sympy.sin(x/3) - 1.6*x\n",
    "dfx = sympy.diff(f, x)\n",
    "dfx"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now compute the slope of the function by evaluating the derivative at the mean."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-1.66528051815545"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = dfx.subs(x, mean)\n",
    "m"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The equation of a line is $y=mx+b$, so the new standard deviation should be $~1.67$ times the input std. We can compute the new mean by passing it through the original function because the linearized function is just the slope of f(x) evaluated at the mean. The slope is a tangent that touches the function at $x$, so both will return the same result. So, let's plot this and compare it to the results from the monte carlo simulation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(d_t, bins=200, density=True, histtype='step', lw=2)\n",
    "plot_normal(xs, f2(mean), abs(float(m)*std), color='k', lw=3, label='EKF')\n",
    "plot_normal(xs, d_t.mean(), d_t.std(), color='r', lw=3, label='MC')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see from this that the estimate from the EKF (in red) is not exact, but it is not a bad approximation either. "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
